import router from '@/router/index'
import store from '@/store/index'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
// 判断有没有 token
//      有 token
//          进入的页面是 login 页,跳转到首页
//          进入的页面非login 页
//              判断是否有用户信息
//                  是: 直接进入
//                  否: 去获取完整用户信息后再正常进入
//      无 token
//          判断是否是白名单(无需token也能进入的页面: /login, /404)
//              是: 直接进入
//              否: 跳转到登录页
// 前置守卫
const whitePage = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  Nprogress.start()
  const token = store.state.user.token
  if (token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      if (store.state.user.userInfo.userId) {
        next()
      } else {
        await store.dispatch('user/getUserInfo')
        next(to.fullPath) // fullPath相当于path多了路由传参
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
  Nprogress.done()
})
// 后置守卫
router.afterEach(() => {
  Nprogress.done()
})
